package 正则表达式练习;

public class TWO {
    public static void main(String[] args) {
        //需求一 用户名 :
        String regex1="\\w{4,16}";
        //需求二 身份证 :
        //简单要求
        String regex2="\\d{17}[Xx\\d]";
        String regex3="\\d{17}(\\d|x|X)";
        String spx="\\d{17}(\\d|(?i)x)";
        //忽略大小写模式--->在匹配的时候忽略abc的大小写  (?i)的作用是忽略后面所有字母的大小写.
        String regex4="(?i)abc";
        System.out.println("abc".matches(regex4));//ture
        System.out.println("ABC".matches(regex4));//ture
        System.out.println("aBc".matches(regex4));//ture

        System.out.println("511724200207253758".matches(regex2));
        //复杂要求
        //410801 1993 02 28 457x
        //前面6位:省份，市区，派出所等信息，第一位不能是0，后面5位是任意数字       [1-9]\\d{5}
        //年的前半段: 18 19 20                                                (18|19|20)
        //年的后半段: 任意数字出现两次                                           \\d{2}
        //月份: 01~ 09 10 11 12                                               (@[1-9]|1[0-2])
        //日期: 01~09 10~19 20~29 30 31                                       (0[1-9]|[12]\\d|3[01])
        //后面四位: 任意数字出现3次 最后一位可以是数字也可以是大写x或者小写x
        String regex5="[0-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|(?i)x)";
        System.out.println("511724200207253758".matches(regex5));//ture
        System.out.println("41080119930228457x".matches(regex5));//ture
        System.out.println("15040119810705387X".matches(regex5));//ture
        System.out.println("130133197204039024 ".matches(regex5));//false
        System.out.println("430102197606046442".matches(regex5));//ture
    }
}
